:- use_module(library(pce)). 
:- use_module(library(tabular)).
:- use_module(library(autowin)).


/*
*	Crea una interfaz sencilla en la que rellenar el nombre del restaurante y la valoración.
*	+RECS: restaurantes recomendados y sus valoraciones.
*	-NameOUT: variable en donde almacenará el nombre del restaurante escrito por el usuario.
*	-ScoreOUT: variable en donde se almacenará la valoración del restaurante dada por el usuario.
*/	
interface(RECS, NameOUT, ScoreOUT) :-

	/* Creamos un picture en donde meter la tabla */
	new(P, auto_sized_picture('Danos tu valoracion')),
	send(P, display, new(T, tabular)),
	send(T, border, 1),
	send(T, cell_spacing, -1),
	send(T, rules, all),
	
	/* Metemos los nombres y scores de cada restaurante y las elecciones del usuario */
	simple_table(T, RECS),
	new(Name, text_item('Nombre_Restaurante')),
	new(Score, menu('Valoracion')),
	new(Aceptar, button('Aceptar', message(P, return, [Name, Score]))),
	
	/* Obtenemos todas las valoraciones */
	findall(N, num(N), NUMS),
	send_list(Score, append, NUMS),
	
	/* Añadimos los elementos a la interfaz */ 
	send(T, append, Name),
	send(T, next_row),
	send(T, append, Score),
	send(T, next_row),
	send(T, append, Aceptar),
	
	/* Obtenemos los datos introducidos por el usuario */
	get(P, confirm, Answer),
    get(Answer, element(1), NameAUX), get(NameAUX, selection, NameOUT),
    get(Answer, element(2), ScoreAUX), get(ScoreAUX, selection, ScoreOUT),
    send(P, destroy).


/* 
*	Rellena la tabla con los pares(nombre, puntuación) de la lista de recomendaciones 
*	+TABLE: Tabla en donde va a introducirse información.
*	+RECS:	Información a introducir, en este caso el par (nombre, puntuación).
*/
simple_table(_, []).	
simple_table(TABLE, [(N,S)|RECS]):-
	send(TABLE, append, text(N)),
	send(TABLE, append, text(S)),
	send(TABLE, next_row),
	simple_table(TABLE, RECS).
	
/* Posibles valoraciones */
num(0).	num(1).	num(2).	num(3).	num(4).	num(5).
num(6).	num(7).	num(8).	num(9).	num(10). 